<?php
class  DB
{
    private $host;
    private $user;
    private $userpwd;
    private $dbh;//数据库的连接
    //构造方法  在实例化对象时首先会被执行的方法  一般完成连接数据库，打开文件，打开连接
    //在构造方法中连接数据
    public function  __construct($host,$user,$userpwd)
    {
        $this->host=$host;
        $this->user=$user;
        $this->userpwd=$userpwd;
        $this->dbh = new PDO("mysql:host=$this->host;dbname=1704phpA", $this->user,$this->userpwd);
        $this->dbh->exec("set  names  utf8");
        $this->dbh->setAttribute(PDO::ATTR_ERRMODE,1);
    }
    //得到一条的数据
    /**
     * @param $table  要查询的数据表
     * @param string $where  要查询的条件
     * @return mixed  返回值 支撑成功 返回数组 失败 返回false
     */
    public  function  getOne($table,$where="1"){
        if(empty($table)){
            return false;
        }
        $sql="select  * from $table  where  $where";
       $stmt= $this->dbh->query($sql);
       return    $stmt->fetch(2);
    }
    /**
     * 查询一条数据
     * @param $table  查询的数据表
     * @param string $where 查询的条件
     * @return bool|mixed  返回值 查询得到数据返回数组  没哟数据返回false;
     */
    public  function  getAll($table,$where="1"){
        if(empty($table)){
            return array('code'=>'1','msg'=>'数据表没有');
        }
        $sql="select  * from $table  where  $where";//组织查询语句
        $stmt= $this->dbh->query($sql);//执行查询语句
        return    $stmt->fetch(2);//返回查询一条数据
    }
    /**
     * @param $array  要插入的数组数据
     * @param $table  要插入的数据表名
     * @return bool|int 插入成功返回true 插入失败返回false
     */
    public  function  insert($array,$table){
        if(count($array)==0 ){
            return false;
        }
        if(empty($table)){
            return  false;
        }
        $filed="";//用于存放字段
        $val="";//用于存放值
        foreach($array  as  $key=>$value){
            $filed.=",`$key`";
            $val.=",'$value'";
        }
        $filed=substr($filed,1);
        $val=substr($val,1);
        $sql="insert  into `$table`($filed)  value($val)";
        echo $sql;
       return $this->dbh->exec($sql);
    }
    /**
     * 修改的方法
     * @param $array
     * @param $table
     * @param $where
     * @return int
     */
    public  function  update($array,$table,$where){
        $val="";//声明变量
      foreach($array as $key=>$value){//循环遍历用户传入的数据
          $val.=",`$key`='$value'";//key是用户传入数组的下标  value用户传入的值 这里要注意拼接的时候变量  `` 为了字段的使用避免使用关键字 $value 带 单引是因为修改的时候字符串
      }
        $val=substr($val,1);//截取前面的逗号
        $sql="update  $table   set  $val   where $where";//组织sql语句
        return $this->dbh->exec($sql);//执行sql语句并返回数据
    }
    public  function  delete($table,$where){
        if($table=="" ||  $where==""){
            $res=array('code'=>'1','msg'=>'数据库名称为空或者条件为空');
            return  $res;
        }
        $sql="delete from  $table where  $where ";
        return $this->dbh->exec($sql);
    }

    /**
     * 关闭连接
     */
    public  function  __destruct()
    {
        // TODO: Implement __destruct() method.
        $this->dbh="";
    }
}